using System;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;

namespace HOPE
{
    #region summary
    /// <summary>
    /// screen ini akan menampilkan blank page hitam
    /// sebagai awalan kalo game dimulai
    /// lalu dia akan fade out dan masuk ke page splash screen
    /// </summary>
    #endregion

    class SplashScreen1 : GameScreen
    {
        //SpriteFont huruf;
        //ContentManager konten;

        //untuk menset berapa lama screen akan bertahan
        const float timeToStayOnScreen = 1f;

        //sebagai counter berapa lama waktu yang telah terlewati
        float waktu = 0f;

        public SplashScreen1()
        {
            //set berapa lama screennya fade in
            TransitionOnTime = TimeSpan.FromSeconds(0.5);
            //set berapa lama screennya fade out
            TransitionOffTime = TimeSpan.FromSeconds(0.5);
        }

        //public override void LoadContent()
        //{
        //    //di method ini, kita akan menginisasi semua konten
        //    //yang akan kita masukkan kedalam screen
        //    //misal kita akan masukkan splashscreen kita
        //    huruf = konten.Load<SpriteFont>("GameScreenFont16px");
        //    //misalkan screen ga ada content yang ditampilkan
        //    //maka fungsi ini akan menampilkan tulisan "konten"
        //    //sebagai tanda kalo tidak ada konten yang di load
        //    if(konten == null)
        //        konten = new ContentManager(ScreenManager.Game.Services, "konten");
        //}

        public override void  UnloadContent()
        {
 	        base.UnloadContent();
        }


        //method untuk hal hal yang diupdate dalam screen
        public override void  Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
 	        base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen);
            if (ScreenState == ScreenState.Active)
            {
                //ketika screen ini benar benar aktif
                //kita ingin secara otomatis timernya berjalan
                //sehingga kita bisa tahu kapan screennya akan fade out
                float waktulewat = (float)gameTime.ElapsedGameTime.TotalSeconds;
                waktu += waktulewat;

                //ketika nilai waktu melewati batasan si timeToStayOnScreen
                if (waktu >= timeToStayOnScreen)
                {
                    //kita memanggil si fungsi ExitScreen(), yang akan membuat screen
                    //fade out dan berganti ke screen selanjutnya
                    ExitScreen();
                }
            }
            else if (ScreenState == ScreenState.TransitionOff)
            {
                if (TransitionPosition == 1)
                {
                    //ketika si TransitionPosition bernilai 1
                    //maka screen kita akan benar benar fade out
                    //lalu pastinya kita harus mengantarkan si game menuju screen selanjutnya
                    
                    ScreenManager.AddScreen(new BackgroundScreen(), null);
                    ScreenManager.AddScreen(new MainMenuScreen(), null);
                }
            }
        }

        //method untuk memerintahkan game menggambar semua konten yang ada
        public override void  Draw(GameTime gameTime)
        {
 	        base.Draw(gameTime);
            const string pesan = "Present";
            SpriteFont huruf = ScreenManager.Font;
            SpriteBatch spriteBatch = ScreenManager.SpriteBatch;
            Viewport viewport = ScreenManager.GraphicsDevice.Viewport;
            Vector2 viewportSize = new Vector2(viewport.Width, viewport.Height);
            Vector2 textSize = huruf.MeasureString(pesan);
            Vector2 viewportPos = (viewportSize - textSize)/2;

            spriteBatch.Begin();
                //kita mulai menggambar semua konten kita tadi
                spriteBatch.DrawString(huruf, pesan, viewportPos, Color.White);
            spriteBatch.End();
        }
        }
    }

